﻿// Decompiled with JetBrains decompiler
// Type: UnityEngine.ApplicationShimBase
// Assembly: UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: E6AE6B5A-2752-4B07-9528-C8B77C62CE79
// Assembly location: C:\Users\windys\Unity\2021.3.39f1c1\Editor\Data\Managed\UnityEngine\UnityEngine.CoreModule.dll
// XML documentation location: C:\Users\windys\Unity\2021.3.39f1c1\Editor\Data\Managed\UnityEngine\UnityEngine.CoreModule.xml

using System;
using UnityEngine.Events;

#nullable disable
namespace UnityEngine
{
  internal class ApplicationShimBase : IDisposable
  {
    public void Dispose() => ShimManager.RemoveShim(this);

    public bool IsActive() => ShimManager.IsShimActive(this);

    public virtual string absoluteURL => Application.absoluteURL;

    public virtual ThreadPriority backgroundLoadingPriority
    {
      get => Application.backgroundLoadingPriority;
      set => Application.backgroundLoadingPriority = value;
    }

    public virtual string buildGUID => Application.buildGUID;

    public virtual string cloudProjectId => Application.cloudProjectId;

    public virtual string companyName => Application.companyName;

    public virtual string consoleLogPath => Application.consoleLogPath;

    public virtual string dataPath => Application.dataPath;

    public virtual bool genuine => Application.genuine;

    public virtual bool genuineCheckAvailable => Application.genuineCheckAvailable;

    public virtual string identifier => Application.identifier;

    public virtual string installerName => Application.installerName;

    public virtual ApplicationInstallMode installMode => Application.installMode;

    public virtual NetworkReachability internetReachability => Application.internetReachability;

    public virtual bool isBatchMode => Application.isBatchMode;

    public virtual bool isConsolePlatform => Application.isConsolePlatform;

    public virtual bool isEditor => Application.isEditor;

    public virtual bool isFocused => Application.isFocused;

    public virtual bool isMobilePlatform => Application.isMobilePlatform;

    public virtual bool isPlaying => Application.isPlaying;

    public virtual string persistentDataPath => Application.persistentDataPath;

    public virtual RuntimePlatform platform => Application.platform;

    public virtual string productName => Application.productName;

    public virtual bool runInBackground
    {
      get => Application.runInBackground;
      set => Application.runInBackground = value;
    }

    public virtual ApplicationSandboxType sandboxType => Application.sandboxType;

    public virtual string streamingAssetsPath => Application.streamingAssetsPath;

    public virtual SystemLanguage systemLanguage => Application.systemLanguage;

    public virtual int targetFrameRate
    {
      get => Application.targetFrameRate;
      set => Application.targetFrameRate = value;
    }

    public virtual string temporaryCachePath => Application.temporaryCachePath;

    public virtual string unityVersion => Application.unityVersion;

    public virtual string version => Application.version;

    public virtual event Action<string> deepLinkActivated
    {
      add => Application.deepLinkActivated += value;
      remove => Application.deepLinkActivated -= value;
    }

    public virtual event Action<bool> focusChanged
    {
      add => Application.focusChanged += value;
      remove => Application.focusChanged -= value;
    }

    public virtual event Application.LogCallback logMessageReceived
    {
      add => Application.logMessageReceived += value;
      remove => Application.logMessageReceived -= value;
    }

    public virtual event Application.LogCallback logMessageReceivedThreaded
    {
      add => Application.logMessageReceivedThreaded += value;
      remove => Application.logMessageReceivedThreaded -= value;
    }

    public virtual event Application.LowMemoryCallback lowMemory
    {
      add => Application.lowMemory += value;
      remove => Application.lowMemory -= value;
    }

    public virtual event UnityAction onBeforeRender
    {
      add => Application.onBeforeRender += value;
      remove => Application.onBeforeRender -= value;
    }

    public virtual event Action quitting
    {
      add => Application.quitting += value;
      remove => Application.quitting -= value;
    }

    public virtual event Func<bool> wantsToQuit
    {
      add => Application.wantsToQuit += value;
      remove => Application.wantsToQuit -= value;
    }

    public virtual event Action unloading
    {
      add => Application.unloading += value;
      remove => Application.unloading -= value;
    }

    public virtual bool CanStreamedLevelBeLoaded(int levelIndex)
    {
      return Application.CanStreamedLevelBeLoaded(levelIndex);
    }

    public virtual bool CanStreamedLevelBeLoaded(string levelName)
    {
      return Application.CanStreamedLevelBeLoaded(levelName);
    }

    public virtual string[] GetBuildTags() => Application.GetBuildTags();

    public virtual StackTraceLogType GetStackTraceLogType(LogType logType)
    {
      return Application.GetStackTraceLogType(logType);
    }

    public virtual bool HasProLicense() => Application.HasProLicense();

    public virtual bool HasUserAuthorization(UserAuthorization mode)
    {
      return Application.HasUserAuthorization(mode);
    }

    public virtual bool IsPlaying(Object obj) => Application.IsPlaying(obj);

    public virtual void OpenURL(string url) => Application.OpenURL(url);

    public virtual void Quit() => Application.Quit();

    public virtual void Quit(int exitCode) => Application.Quit(exitCode);

    public virtual bool RequestAdvertisingIdentifierAsync(
      Application.AdvertisingIdentifierCallback delegateMethod)
    {
      return Application.RequestAdvertisingIdentifierAsync(delegateMethod);
    }

    public virtual AsyncOperation RequestUserAuthorization(UserAuthorization mode)
    {
      return Application.RequestUserAuthorization(mode);
    }

    public virtual void SetBuildTags(string[] buildTags) => Application.SetBuildTags(buildTags);

    public virtual void SetStackTraceLogType(LogType logType, StackTraceLogType stackTraceType)
    {
      Application.SetStackTraceLogType(logType, stackTraceType);
    }

    public virtual void Unload() => Application.Unload();
  }
}
